﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.ServiceModel;

namespace CheckBaseLib
{
    public class Check
    {
        [ServiceContract]
        public interface IChat
        {
            [OperationContract]
            string ReverseString(string str);

            [OperationContract]
            bool Join(string nickname);

            [OperationContract]
            void Disconnect(string nickname);

            [OperationContract]
            void ReceiveMessage(string nickname, string message);

            [OperationContract]
            Tuple<int, List<Tuple<string, string>>> GetNewMessages(string nickname, int idLastMessage);

            [OperationContract]
            List<string> Users();

            [OperationContract]
            bool Live();
        }

        public static bool CheckIP(string pref, int i)
        {
            Console.WriteLine("Проверяем {0}{1}", pref, i);
            var flag = true;
            try
            {
                // пытаемся соедениться с сервисом на очередном компьютере сети
                var factory = new ChannelFactory<IChat>(
                    new NetTcpBinding(SecurityMode.None), new EndpointAddress(string.Format("net.tcp://{0}{1}/Chat", pref, i)));
                var proxy = factory.CreateChannel();
                proxy.Live();
            }
            catch (Exception)
            {
                flag = false;
                Console.WriteLine("Исключён адрес {0}{1}", pref, i);
            }

            if (flag != true) return false;

            // удачно соеденились - сервер поднят
            Console.WriteLine("В сети есть другой сервер по адресу {0}{1}", pref, i);
            return true;
        }
    }
}
